import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter_demo/core/common/event/index.dart';
import 'package:flutter_demo/ui/pages/status/data/share_data.dart';

/// 我们可以发现，通过观察者模式来实现跨组件状态共享有一些明显的缺点：
/// 必须显式定义各种事件，不好管理。
/// 订阅者必须需显式注册状态改变回调，也必须在组件销毁时手动去解绑回调以避免内存泄露。
class AcceptWidget extends StatefulWidget {
  const AcceptWidget({super.key});

  @override
  State<AcceptWidget> createState() => _AcceptWidgetState();
}

class _AcceptWidgetState extends State<AcceptWidget> {
  late StreamSubscription stream;
  String message = "hello world";
  @override
  Widget build(BuildContext context) {
    return Text(message);
  }

  @override
  void initState() {
    stream = eventBus.on<ShareData>().listen((event) {
      setState(() {
        message = "${event.nickname} - ${event.level}";
      });
    });
    super.initState();
  }

  @override
  void dispose() {
    stream.cancel();
    super.dispose();
  }
}
